package br.com.sgmf.web.managedbean;

import br.com.sgmf.model.Parte;
import br.com.sgmf.service.ParteService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import java.util.List;

@Controller
@Scope("request")
public class ParteBean {

    private static final String PARTE_CADASTRADA_COM_SUCESSO = "Parte cadastrada com sucesso!";
    private static final String PARTE_EDITADA_COM_SUCESSO = "Parte editada com sucesso!";
    private static final String PARTE_EXCLUIDA_COM_SUCESSO = "Parte excluída com sucesso!";

    private Parte parte;
    private List<Parte> partes;

    @Autowired
    private ParteService parteService;

    @PostConstruct
    public void init() {
        parte = new Parte();
        partes = parteService.findAll();
    }

    public String salvar() {
        FacesMessage message;

        if (parte.getId() == null) {
            parteService.save(parte);
            message = new FacesMessage(FacesMessage.SEVERITY_INFO, PARTE_CADASTRADA_COM_SUCESSO, null);
        } else {
            parteService.update(parte);
            message = new FacesMessage(FacesMessage.SEVERITY_INFO, PARTE_EDITADA_COM_SUCESSO, null);
        }

        parte = new Parte();

        FacesContext context = FacesContext.getCurrentInstance();
        context.addMessage(null, message);

        return null;
    }

    public String editar(Parte parte) {
        this.parte = parte;
        return null;
    }

    public String excluir(Parte parte) {
        parteService.delete(parte);

        parte = new Parte();

        FacesContext context = FacesContext.getCurrentInstance();
        FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, PARTE_EXCLUIDA_COM_SUCESSO, null);
        context.addMessage(null, message);

        return null;
    }

    public Parte getParte() {
        return parte;
    }

    public void setParte(Parte parte) {
        this.parte = parte;
    }

    public List<Parte> getPartes() {
        return partes;
    }

    public void setPartes(List<Parte> partes) {
        this.partes = partes;
    }

}
